#pragma once

#include "njm_model.hpp"
#include "njm_camera.hpp"
#include "njm_descriptor.hpp"
#include <vulkan/vulkan.h>
#include <memory>

namespace njm {

    class Coordinator;

    struct ECSGlobalUbo
    {
        glm::mat4 projection{1.f};
        glm::mat4 view{1.f};
        glm::mat4 inverseView{1.f};
        glm::vec4 ambientLightColor = glm::vec4{1.f, 1.f, 1.f, 0.1f};
    };

    struct ECSFrameInfo {
        int frameIndex;
        float frameTime;
        VkCommandBuffer commandBuffer;
        NjmCamera& camera;
        VkDescriptorSet globalDescriptorSet;
        std::unique_ptr<Coordinator>& coordinator;
        NjmModel::Map& models;
    };
}